package dao

import (
	"fmt"
	"miao-wails/backed/global"
	"miao-wails/backed/structs/base"
	"miao-wails/backed/structs/tables"
)

var TarFileDao = new(tarFileDao)

type tarFileDao struct {
}

func (d tarFileDao) UpdateById(m tables.TarFile) (err error) {
	// updates() 只会更新非零字段，save 才是全量更新
	err = DB.Save(&m).Error
	return err
}

func (d tarFileDao) Create(m *tables.TarFile) (err error) {
	err = DB.Model(&tables.TarFile{}).Create(m).Error
	return
}
func (d tarFileDao) FindByMd5(md5 string) (m tables.TarFile, err error) {
	err = DB.Model(&tables.TarFile{}).Where("md5 = ?", md5).Find(&m).Error
	return
}
func (d tarFileDao) FindById(fid int64) (m tables.TarFile, err error) {
	err = DB.Model(&tables.TarFile{}).Where("id = ?", fid).Find(&m).Error
	return
}

func (d tarFileDao) FindList(in base.SearchTarFile) (li []tables.TarFile, err error) {
	err = DB.Model(&tables.TarFile{}).
		Where("is_private = ? and name like ? and label like ?", in.IsPrivate, "%"+in.Name+"%", "%"+in.Label+"%").
		Find(&li).Error
	return
}

func (d tarFileDao) DelById(fid int64) (err error) {
	err = DB.Where("id = ?", fid).Delete(&tables.TarFile{}).Error
	return
}

func (d tarFileDao) UpdateCurrentMusicId(id int64) (err error) {
	global.Conf.ModuleConfig.MusicCurrentId = fmt.Sprintf("%d", id)
	err = DB.Model(&tables.SysConfig{}).Where("key = ? ", tables.ConfigForCurrentMusicId).Update("val", fmt.Sprintf("%d", id)).Error
	return err
}

func (d tarFileDao) UpdateCurrentMusicLoopMode(str string) (err error) {
	global.Conf.ModuleConfig.MusicLoopMode = str
	err = DB.Model(&tables.SysConfig{}).Where("key = ? ", tables.ConfigForMusicLoopMode).Update("val", str).Error
	return err
}
